Conventionally, as a means for preventing data losses caused by failures in storage devices such as Hard Disk Drives (HDDs), storing methods including Redundant Array of Inexpensive Disks (RAID) 5 have popularly been used. According to RAID 5, a virtual HDD is structured by combining a plurality of HDDs together and an error correction code is structured with the plurality of HDDs, so that it is possible to address failures that occur in each of the HDDs. More specifically, according to RAID 5, an error correction code (parity) is assigned to a plurality of pieces of data (called a parity group), so that the plurality of pieces of data and the parity are distributed across and stored in the plurality of HDDs.
However, according to a storing method such as RAID 5, when it is requested to rewrite old data stored in a part of blocks in an HDD, the stored old data and parity need to be read before new data is written into the HDD, for the purpose of calculating a new parity. This is called “write penalty”. A problem has been known where the overhead of such write penalty causes the level of performance to become lower. As one of the methods for solving this problem, a method has been known in which a plurality of pieces of data written into small blocks is buffered by adopting a log-structured file system, and at the point in time when the size of the buffered data reaches the size of the parity group, a parity is calculated and is simultaneously written into HDD.
In recent years, it has been proposed to adopt a RAID technique using semiconductor memory devices such as NAND flash memories, instead of to HDDs as described above. These semiconductor memory devices are called block-erase-type semiconductor memory devices because data is erased in units of blocks. In block-erase-type semiconductor memory devices, rewriting cannot be performed on a page basis. Therefore, after erasure is performed on the entirety of a block, the data needs to be written sequentially from the top page of the block. In contrast, when it is requested from an apparatus superordinate to an HDD to write data into the HDD, a sector address is specified regardless of blocks and pages. For this reason, as one of the methods for improving efficiency of data writing in a Solid State Drive (SSD) that uses a block-erase-type semiconductor memory device as a storage medium, a method has been known in which pieces of data to be requested to write are sequentially and successively written into pages in the order of the arrival thereof, regardless of the order of the sector addresses, so that an association between the block number and the page number of the written data and the sector address is separately managed by the SSD.
This method is efficient in the case where the method is used by one SSD alone; however, in the case where RAID 5, RAID 6, or the like is structured by combining a plurality of SSDs together, there is a possibility that the usage life of the block-erase-type semiconductor memory devices may be shortened because the level of performance is degraded by the write penalty and because the frequency of updating parities is high.